import os
import os
import sys
import shutil
from pathlib import Path

def package_app():
    # 检查是否安装了pyinstaller
    try:
        import PyInstaller
        print("PyInstaller已安装，可以开始打包...")
    except ImportError:
        print("正在安装PyInstaller...")
        os.system(f"{sys.executable} -m pip install pyinstaller")
        print("PyInstaller安装完成！")
    
    # 创建临时目录用于打包
    temp_dir = Path('temp_build')
    if temp_dir.exists():
        shutil.rmtree(temp_dir)
    temp_dir.mkdir(exist_ok=True)
    
    try:
        # 使用pyinstaller打包应用程序
        cmd = [
            f"{sys.executable}",
            "-m", "PyInstaller",
            "--onefile",  # 生成单个可执行文件
            "--windowed",  # 无控制台窗口
            "--icon", "NONE",  # 无图标（如果需要图标，可以替换为.ico文件路径）
            "--name", "StockIndicator",  # 生成的可执行文件名称
            "stock_indicator.py"
        ]
        
        # 执行打包命令
        os.system(' '.join(cmd))
        
        # 移动生成的可执行文件到当前目录
        dist_dir = Path('dist')
        if dist_dir.exists() and (dist_dir / 'StockIndicator.exe').exists():
            if Path('StockIndicator.exe').exists():
                Path('StockIndicator.exe').unlink()
            shutil.move(str(dist_dir / 'StockIndicator.exe'), '.')
            print("\n打包完成！可执行文件已生成：StockIndicator.exe")
            
            # 清理临时文件
            print("正在清理临时文件...")
            if Path('build').exists():
                shutil.rmtree('build')
            if Path('dist').exists():
                shutil.rmtree('dist')
            if Path('StockIndicator.spec').exists():
                Path('StockIndicator.spec').unlink()
            print("清理完成！")
        else:
            print("打包失败：未找到生成的可执行文件。")
    except Exception as e:
        print(f"打包过程中发生错误：{e}")
    finally:
        # 清理临时目录
        if temp_dir.exists():
            shutil.rmtree(temp_dir)

if __name__ == '__main__':
    print("===== 上证指数指示器打包工具 =====")
    package_app()
    input("按回车键退出...")